package com.hyx.api.service;

import com.hyx.api.domain.bo.*;
import com.hyx.api.domain.vo.RecoverInquiryOrderListVo;
import com.ruoyi.common.core.domain.AjaxResult;

import java.util.Date;
import java.util.List;

public interface IAppRecoverService {

    /**
     * 根据报价状态获取订单列表
     * 0：未报价
     * 1：报价中
     * 3：待支付
     *
     * @param offerStatus
     * @return
     */
    List<RecoverInquiryOrderListVo> queryInquiryOrderList(Integer offerStatus);

    /**
     * 查询询价订单是否可以报价
     *
     * @param inquiryOrderId
     * @return
     */
    AjaxResult queryIsAllowOffer(Integer inquiryOrderId);

    /**
     * 获取关于询价订单的报价信息
     *
     * @param inquiryOrderId
     * @return
     */
    AjaxResult queryOfferOrderByInquiryId(Integer inquiryOrderId);

    /**
     * 创建报价订单
     *
     * @param bo
     * @return
     */
    AjaxResult addOfferOrder(OfferOrderBo bo);

    /**
     * 更新报价订单
     *
     * @param bo
     * @return
     */
    AjaxResult updateOfferOrder(OfferOrderBo bo);

    /**
     * 修改回收订单状态为已完成
     *
     * @param bo
     * @return
     */
    AjaxResult recycleOrderConfirmReceiving(RecOrderStaUpdateBo bo);

    /**
     * 退货订单创建_基础单是回收订单
     *
     * @param recycleOrderId
     * @return
     */
    AjaxResult refundOrderCreate(Long recycleOrderId);

    /**
     * 生成追差订单
     *
     * @param bo
     * @return
     */
    AjaxResult addSpreadOrder(SpreadOrderBo bo);

    /**
     * 修改追差订单
     *
     * @param bo
     * @return
     */
    AjaxResult updateSpreadOrder(SpreadOrderBo bo);

    /**
     * 获取订单详情-通过询价订单关联
     *
     * @param inquiryOrderId
     * @return
     */
    AjaxResult queryInquiryOrderDetail(Long inquiryOrderId);

    /**
     * 获取报价师工作台数量
     * queTime 格式为：yyyy-MM-dd
     *
     * @param queTime
     * @return
     */
    AjaxResult queryRecoverWorkCount(String queTime);

    /**
     * 获取回收商统计信息-根据当前用户
     *
     * @param bo
     * @return
     */
    AjaxResult queryRecycleStaticsInfo(RecycleStaticsQueBo bo);

    /**
     * 获取报价订单的消息
     *
     * @param offerOrderId
     * @return
     */
    AjaxResult queryMsgDialogueList(Long offerOrderId);

    /**
     * 获取回收商回收订单列表
     * 2：待发货
     * 4：已完成
     * 5：取消
     * 6：已退单
     *
     * @param req
     * @return
     */
    AjaxResult queryRecycleOrderList(ShopRecOrderQueBo req);

    /**
     * 获取回收商工作台统计信息
     *
     * @return
     */
    AjaxResult queryRecycleStatistic();

    /**
     * 获取订单列表-回收商相关
     *
     * @param status  1：待报价
     *                2：已报价
     *                3：待收货
     *                4：已退单
     *                5：未成交
     * @param queTime 查询的哪一天
     * @return
     */
    List<RecoverInquiryOrderListVo> queryOrderListByRecycle(Integer status, Date queTime);

    /**
     * 获取货物跟踪信息
     *
     * @return
     */
    AjaxResult queryRecycleGoodsTrack();

    /**
     * 创建/更新回收商收货地址
     *
     * @param bo
     * @return
     */
    AjaxResult createOrUpdateRecycleRecAddr(RecycleReceivingAddrBo bo);

    /**
     * 删除回收商收货地址
     *
     * @param id
     * @return
     */
    AjaxResult delRecycleRecAddr(Integer id);

    /**
     * 获取回收商_收货地址列表
     *
     * @param keyword
     * @return
     */
    AjaxResult queryRecycleRecAddrList(String keyword);

    /**
     * 回收商绑定合作商户
     *
     * @param companyId
     * @return
     */
    AjaxResult bindCompany(Integer companyId);

    /**
     * 删除回收商绑定的商户关系
     *
     * @param id
     * @return
     */
    AjaxResult delBindCompany(Integer id);

    /**
     * 获取回收商绑定的商户列表
     *
     * @param companyName
     * @return
     */
    AjaxResult queryBindCompanyList(String companyName);

}
